#include <iostream>
#include <map>  //红黑树，平衡二叉树  键值唯一
#include <vector>

int main()
{
#if 0
    //对组 键值对
    // std::pair<int,std::string> p = std::make_pair(1,"zhangsan");    //三种构建方式，哪三种？？？
    // std::cout<<p.first<<" "<<p.second<<std::endl;

    //std::vector<std::pair<int,std::string> m; //数组里面放键值对，但是不能排序
    //排序键值对组 按键排序
    std::map<int,std::string> m;    //类型可以修改，但是一定是可以排序的类型
    m.insert(std::pair<int,std::string>(1,"zhangsan"));
    m.insert(std::make_pair(2,"lisi"));
    m.insert(std::make_pair(3,"wangwu"));
    m.insert(std::make_pair(2,"yang"));

    for(auto ite = m.begin(); ite != m.end(); ite++)
    {
        std::cout<<ite->first<<" "<<ite->second<<std::endl;
    }
    m[2] = "test";      //键值存在就修改值
    m[3] = "wangwu";    //键值不存在就插入值,但是find不行
    //std::cout<<m[2]<<std::endl;

    auto ite = m.find(2);
    if(ite == m.end())
    {
        std::cout<<"没找到\n";
    }
    else
    {
        std::cout<<ite->first<<" "<<ite->second<<std::endl;
    }
#endif
    int a[] = {2,3,1,4,6,5,2,3,2,4};
    std::map<int,int> m;
    for(int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
    {
        m[a[i]]++;
    }

    auto MaxIte = m.begin();
    for(auto ite = m.begin(); ite != m.end(); ite++)
    {
        if(ite->second > MaxIte->second)
        {
            MaxIte = ite;
        }
    }
    std::cout<<" 出现次数最多的树是"<<MaxIte->first<<"出现了"<<MaxIte->second<<"次"<<std::endl;
    return 0;
}